﻿/**
 * @file NandChannel.h
 * @brief NAND通道仿真模块，管理通道内多个NAND设备。
 */
#pragma once
#ifndef __NandChannel_h__
#define __NandChannel_h__

#include <vector>
#include "Nand/Sim/NandDevice.h"
#include "Buffer/Hal/BufferHal.h"

/**
 * @class NandChannel
 * @brief NAND通道仿真类，管理通道内设备集合。
 */
class NandChannel
{
public:
    /**
     * @brief 初始化通道内所有设备。
     * @param bufferHal 缓冲区管理器
     * @param deviceCount 设备数量
     * @param blocksPerDevice 每设备块数
     * @param pagesPerBlock 每块页数
     * @param bytesPerPage 每页字节数
     */
    void Init(BufferHal *bufferHal, U8 deviceCount, U32 blocksPerDevice, U32 pagesPerBlock, U32 bytesPerPage);

    /**
     * @brief 访问指定索引的设备。
     * @param index 设备索引
     * @return 设备引用
     */
    NandDevice &operator[](const int index);

private:
    std::vector<NandDevice> _Devices; /**< 通道内设备集合 */
};

#endif